package co.edu.uniquindio.logica;

import java.io.Serializable;
import java.util.List;

import javax.persistence.*;

/**
 * Entity implementation class for Entity: Vendedro esta entidad me representa a
 * un vendedor en la logica del negocio
 * 
 * @author Andres Felipe Abril
 * @author Luis Enrique Robledo
 */

@Entity
@Table(name = "Vendedor")
public class Vendedor extends Persona implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	/**
	 * este atributo representa que un vendedor puede tener muchas subasta
	 */
	@OneToMany(mappedBy = "vendedor")
	private List<Subasta> subastas;
	/**
	 * este atributo representa que un vendedor puede tener muchos automoviles
	 */
	@OneToMany(mappedBy = "vendedor")
	private List<Automovil> automoviles;
	/**
	 * este atributo representa que un vendedor puede tener muchas calificaciones
	 */
	@OneToMany(mappedBy = "vendedor")
	private List<Calificacion> calificaciones;

	/**
	 * metodo contructor vacio obligatorio para la entidad
	 */
	public Vendedor() {
		super();
	}

	/**
	 * metodo constructor de la entidad que recibe los parametros necesarios
	 * para instanciarla
	 * @param cedula
	 * @param correo
	 * @param nombre
	 * @param pais
	 * @param alias
	 */
	public Vendedor(String cedula, String correo, String nombre, Pais pais,
			String alias,String contrasenia) {
		super(cedula, correo, nombre, pais, alias,contrasenia);
		// TODO Auto-generated constructor stub
	}

	
	/**
	 * metodo para obtener la lista de subastas que tiene el vendedor
	 * @return una lista con las subastas del vendedor
	 */
	public List<Subasta> getSubastas() {
		return subastas;
	}

	/**
	 * metodo pera especificar todas las subastas del vendedor 
	 * @param una lista con las subastas que pertenecen a este vendedor
	 */
	public void setSubastas(List<Subasta> subastas) {
		this.subastas = subastas;
	}

	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return getNombre() ;
	}

	/**
	 * metodo para obtener una lista con los automoviles del vendedor
	 * @return una lista con automoviles
	 */
	public List<Automovil> getAutomoviles() {
		return automoviles;
	}

	/**
	 * metodo para especificar que grupo de automoviles tiene el vededor
	 * @param una lista con automoviles
	 */
	public void setAutomoviles(List<Automovil> automoviles) {
		this.automoviles = automoviles;
	}

	/**
	 * metodo para obtener las calificaciones de este vendedor
	 * @return una lista con calificaciones
	 */
	public List<Calificacion> getCalificacions() {
		return calificaciones;
	}

	/**
	 * metodo para especificar las calificaciones del vendedor
	 * @param una lista con calificaciones
	 */
	public void setCalificaciones(List<Calificacion> calificacions) {
		this.calificaciones = calificacions;
	}

}
